Software defined networking (SDN) comprises a plurality of hosts in communication over a physical network infrastructure, each host having one or more virtualized endpoints such as virtual machines (VMs) or containers that are connected to logical overlay networks that may span multiple hosts and are decoupled from the underlying physical network infrastructure. One common characteristic of software defined networking is a separation of the control plane from the data plane. Control planes in a network are concerned with determining the logical overlay network topology and maintaining information about network entities such as logical switches, logical routers, and virtualized endpoints, etc. The logical topology information is translated by the control plane into network configuration data, such as forwarding table entries to populate forwarding tables at virtual switches at each host. A virtual switch provided by a host may be thought of as a physical network switch implemented in software by the hypervisor, and may connect virtualized endpoints running on the same host to each other as well as to virtual endpoints on other hosts. A plurality of virtual switches distributed across a plurality of hosts may collectively, by way of their forwarding tables and with adjunct processes called tunnel endpoints (TEPs) implement a logical switch that can define a logical overlay network.
Platform as a service (PAAS) and container as a service (CAAS) solutions like Cloud Foundry, Kubernetes, and Openshift provide application level abstractions that allow developers to deploy, manage, and scale their applications. PAAS is a service that provides a platform that allows users to develop, run, and manage applications without the complexity of building and maintaining the infrastructure typically associated with launching an application. For example, a user can control software deployment with minimal configuration options, while the PAAS provides services to host the user's application. CAAS is a form of container-based virtualization in which container engines, orchestration, and the underlying compute resources are delivered to users as a service from a cloud provider. These solutions provide support for compute and storage but do not provide any native networking support. Instead, these solutions rely on network overlay solutions like Flannel or Calico to provide networking for the applications. Network overlay solutions use software virtualization to create additional layers of network abstraction that run on top of the physical network, while also providing new applications or security benefits. However, these network overlay approaches do not provide the flexibility of determining how the applications' networking needs are translated to underlying network topology. The topology may be useful for various reasons, including quota management, tenant-level isolation/multi-tenancy, and deployment flexibility.